package Uebung02;
import de.htw.saarland.stl.Stdin;
/**
 * Testklasse einer simplen Bestandsführung
 * 
 * @author1  Andreas Schreiner
 * @author2  Kevin Morsch
 * @version 1.0-u2
 */
public class TestDialog
{
    private Artikel wahl;
    //Klassenkonstanten
    private static final int ANLEGEN    =   1;
    private static final int AUFBUCHEN  =   2;
    private static final int ABBUCHEN   =   3;
    private static final int SETMETHODE =   4;
    private static final int ENDE       =   0;

    /**
     * Standardkonstruktor der Klasse TestDialog
     */
    public TestDialog(){}


    /**
     * Methode start
     *Error Auffang-prozess bei Falscheingabe
     *der Artikeldaten.
     */
    public void start(){
        wahl = null;
        int function = -1;

        while (function != ENDE) {
            try {
                function = numdefifunction();
                ifunction(function);
            } catch (AssertionError e) {
                System.out.println(e);
            } catch (Exception e) {
                System.out.println(e);
                e.printStackTrace();
            }
        }
    }

    private int numdefifunction() {
        System.out.print(
            ANLEGEN     + ": Anlegen" + '\n'+
            AUFBUCHEN   + ": Aufbuchen " +'\n'+
            ABBUCHEN    + ": Abbuchen " +'\n'+
            SETMETHODE  + ": Setmethode " +'\n'+
            ENDE        + ": Beenden"+'\n'+
            "Ihre Eingabe: " );
        return Stdin.readlnInt();
    }
    // if Funktion
    private void ifunction(int function){

        int bestand;
        String bezeichnung;
        int artikelNR;
        int menge;
        if (function == ANLEGEN){
            wahl = artikelAnlegen(); 
        }
        else if (function == AUFBUCHEN) {
            menge = Stdin.readlnInt("\nAufzubuchende Menge: ");
            wahl.bucheZugang(menge);
        }
        else if (function == ABBUCHEN){
            menge = Stdin.readlnInt("\nAbzubuchende Menge: ");
            wahl.bucheAbgang(menge);
        }
        else if (function == SETMETHODE) {
            bezeichnung = Stdin.readlnString("\nNeue Bezeichnung: ");  
            wahl.setBezeichnung(bezeichnung);
        }
        else if (function == ENDE){
            System.out.println("\nProgramm beendet.");
        }
        else{
            System.out.println("\nFalsche function!");
        }

        System.out.println(wahl);
    }

    private Artikel artikelAnlegen() {
        int bestand;
        String bezeichnung;
        int artikelNR;
        artikelNR = Stdin.readlnInt("Artikelnummer: ");
        bezeichnung = Stdin.readlnString("Bezeichnung: ");
        bestand = Stdin.readlnInt("Aktueller Bestand: ");
        return new Artikel(artikelNR, bezeichnung, bestand);
    }

    /**
     * Start des Testprogrammes
     *
     * @param args
     */
    public static void main (String[] args) {
        TestDialog d = new TestDialog();
        d.start();
    }
}
